package com.ghc.zkclient;

import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;

/**
 * 借助zkClient完成会话的创建
 */
public class NoteAPI {
    public static void main(String[] args) throws InterruptedException {
        /*
            创建爱你一个zkClient实例就可以完成连接， 完成会话的创建
         */
        ZkClient zkClient = new ZkClient("127.0.0.1:2180");
        System.out.println("会话被创建了");

        //判断节点是否存在
        String path = "/ghc-zkclient-Ep";
        boolean exists = zkClient.exists(path);
        if (!exists){
            //创建节点
            zkClient.createEphemeral(path, "123");
        }
//读取节点内容
        Object o = zkClient.readData(path);
        System.out.println(o);

        //注册监听
        zkClient.subscribeDataChanges(path, new IZkDataListener() {
            /*
            当节点数据内容发生时执行的回调方法
             */
            @Override
            public void handleDataChange(String s, Object o) throws Exception {
                System.out.println(s + "该节点内容被更新， 内容为" + o);
            }

            /*
            当节点被删除的时候会执行的回调方法
             */
            @Override
            public void handleDataDeleted(String s) throws Exception {
                System.out.println(s + "该节点内容被删除");
            }
        });

        //更新节点内容
        zkClient.writeData(path, "456");
        Thread.sleep(1000);

        zkClient.delete(path);
        Thread.sleep(1000);
    }
}
